local-scope
![Uses ECMAScript 2015](https://img.shields.io/badge/ECMA-2015-f0db4f.svg?style=flat-square)
This adapter uses ECMAScript 2015 (ES 6) syntax: you must run at least Node.js v4 in order to use this adapter.
About
This module allows for easy implementation of trully private object / class instance properties. It uses ES 2015's WeakMap to achieve true privacy without causing memory leaks.
Usage
You start by generating a private scope manager. This ensures that no other module, even when using the same cached version of this module, can get access to your private data.
const local = require('local-scope')()
Alternatively, to make full use of ES2015 module syntax, you can create a new scope this way:
import scope from 'local-scope/create'
Now you can use that local
function to set and retrieve private data from your own functions!
class Person {
constructor (publicName, secretName) {
this.publicName = publicName
local(this).secretName = secretName
}
hasSecretName (name) {
return local(this).secretName === name
}
}
const bruce = new Person('Bruce Wayne', 'Batman')
, clark = new Person('Clark Kent', 'Superman')
bruce.hasSecretName('Batman')
clark.hasSecretName('Batman')
Important: To access the private properties of an object, you need to have two things:
- A reference to the object
- A reference to the function to which you saved the private data
The scope manager always returns an object, so you can save whatever you need there, it just has to be saved into an object's property (you can name it whatever you like).
License
This software is licensed under the BSD-3-Clause License. See the LICENSE file for more information.